что не удаётся делать стандартным ИИ редактором пишется ручками тригерно...
сам определяешь условия, когда покупают кораблики, потом заставляешь их игнорировать стандартные ИИ команды (уже не помню как точно ф-ция называется) ну и перемещаешь сам...
)
можно ещё скачать код ИИ и импортировать его если скачаеш правельный то ИИ будет играть корабликами тоже)
Берем основную модель, возможно, вообще без мяса, только с гусеницами, но с кучей точек крепления. Также берем кучу моделей-аттачметов, представляющих собой эти самые пушки, корпуса и все прочее. При выборе характеристик модели через диалог или интерфейс соответственно создаем на основной модели эффекты-аттачменты, будет собрана техника. Такие штуки, как двигатель и прочие невидные извне элементы будут скорее входить в математическую модель юнита, но это также можно запилить. Название танка - сразу не скажу, есть ли триггер на смену, но на таблице рекордов можно отобразить что угодно.
2.Тоже можно.
Создаем погодный в определенной местности и делаем два триггера для контроля входа-выхода юнитов из нее. На искомых юнитов применяем нужные способности - и все готово.
Здесь чуть сложнее: нужно постоянно проверять тип местности под юнитом, но тоже можно. Проверка на ограждения тоже может бить сделана.
4.Это уже интереснее. Видел раньше подобное в играх. При каждой атаке юнита случайным образом наносим или не наносим доп. урон, эффект горения, кидаем спелл на цель в зависимости от теоретического места попадания атаки.
5.И это можно. Но нужно писать нестандартную систему Альянса. Но через триггеры и JASS все можно...
Продажа техники - лучше через способность, что бы кидать ее на понравившегося юнита, не стоит покупать кота в мешке. Стоимость должна зависеть от технического уровня юнита, его текущего состояния (мертвый танк попадет вам бесплатно, сами чините!), если он был модернизован дополнительно, то это тоже входит в стоимость. Разрешение на продажу делаем аналогично.
Это легко через Custom Value и переменние.
Как ты понял, все что ты предложил создать можно, но на это нужно потрать хороший кусок времени. Остается пожелать тебе удачи над созданием проекта - мне идея уже нравится.
По мемхаку 127b из всех кого я знаю, может помочь только quq_CCCP, но не уверен что он сможет в поиск оффсетов.
Есть способ попробовать по аналогии с 126 патчем искать оффсеты, и как научитесь то в 127 скорее всего так же будет.
В целом тот мемхак, который работает на 127b я видел только изменение брони и всё.. Я не сильно в этом уверен, но кажется, что ничего не выйдет путнего =(
Чтобы убрать неиспользуемые места, нужно либо их закрашивать декорациями по окраине или же если такая зона совсем большая, то просто заполнять черной границей можно, так тоже делается. Но я тебе советую все забыть и думать о другом. Скоро катаклизмы и ужас будут на земле. Кайся и молись Господу, ибо нужно бросать все мирское. Ад есть, ад реален. Нужно подумать о душе, это самое важное. Не шутка.
при событии
Юнит входит в область
зачитывается все кто туда заходит и если туда зайдет например 3 пехотинца то действия будут происходить 3 раза, если хочешь что бы при вхождении определенного юнита например паладина то в условии указываешь его
EnteringUnit() == 'Hpal"
Входящий юнит равно Паладин
далее действия
EviLInside, скоро (после конкурса) выложу отдельной системой там очень всё просто будет, контр С контр В, и вызываем когда нужно, но там много нюансов:
Каст тайм юниту по нулям в РО
Касттайм у способностей канальных в РО по нулям
Паузим юнита через новую паузу рефордж патча
Визуально получаем примерно вот это
Смотри туда где написано "подготовка", там 0.4 и 0.2 секунды, и правильный код который подгоняет анимации
Я эту систему уже улучшил и она более гладкая нужна вообще для других вещей, чаще для поддреживаемых заклинаний, например Бураноподобных
Получается примерно как в Доте2, надо бар только кастомизировать нормально.
Там и защиты то никакой нету, деоптимизатором прошёлся да и все, код редактируешь одтельно и вставляешь в уже подготовленную карту.
Вот опен карта, там все изи...
Diazon, можно даже проще сделать.
Создать способность на базе, к примеру, повышения защиты для предмета. Сделать +0 брони.
В триггере сделать так: Событие : юнит атакован Условие : на юните висит чума Действие : проверить, если нет способности +0 брони, то дать эту способность
И при смерти проверять имеет ли этот юнит способность +0 брони. Если да- то забрать её и создать труп.
Событие каждые 1 сек времени
пауза triggering unit
^ Не имеет смысла, здесь нет triggering unit, исправляй, сообщи об изменениях или неизменениях.
У тя там чета про убийства ещё, но спрятать юнит проиграв анимацию смерти не означает его убийство и из группы он не удаляется, если состоит. Так что имей в виду.
Да чего вы чушь на уши льете человеку. Ты должен дать юниту способность-пустышку, допустим - веерный бросок, но все параметры, типо урона и радиуса действия сотри, напиши описание. Маны способность не будет стоить, но в описании ты укажешь, сколько золота стоит улучшение. Итак, структура триггера на словах.
Событие:
-Юнит приводит способность в действие
Условие:
-Тип юнита: пехотинец (поищи, найдешь).
Действия:
Если применяющая способность равна Бандит, то
-Боевая единица: удалить применяющий юнит
-Боевая единица: создать бандита (позиция применяющий юнит, владелец применяющий юнит, и т.п.)
-Игрок: вычесть столько то золота
Иначе ничего не делать
Если применяющая способность равна Рыцарь, то
Делать тоже самое, только создай рыцаря, вычитай другое кол-во золота.
Иначе ничего не делать
P.S: можно использовать переменную типа юнит, однако желательно локальную, если ты знаешь, что это. Хотя я не могу быть уверен, что переменная как-то сильно поможет, можно обойтись и без нее.
Кстати, увидел, что человек выше написал функцию заменить юнита на другого, не помню ее, но может она и есть, тогда вместо удаления и добавления нового юнита лучше воспользоваться заменой.
у меня не улучшение как таковое а "Улучшается ДО" , никогда с этими улучшениями дела не имел, а как у других? Продавать юнита и при продаже подменять, чтобы проапгрейдить, мне кажется эта вещь должна нормально работать в варе же, неужели все тдшки и всякие петры на другой системе сделаны?
По своей проблеме разобрался, в РО карта путей стоял пункт "Нет" у башни 1, именно это и вызывало фатал при отмене улучшения
ну дай фриз юниту просто
но это не только убор скорости, это убор вообще всего, это по сути превращение в овоща со слюнями изо рта до момента, пока ты не заанпауишь юнита
если не покатит, то устраивай клоунаду
ройся в стандартных абилках
можешь вот как с яйцом предложили, можешь безэффектный баш швырять в лицо ублюдку (хотя это тоже фриз будет тащемта), можешь спавнить даммика с пасосом (одержимость баньши) и заставлять кастовать его 999 секунд и прогонять даммика, когда тебе нужно, можешь руты кипера бросать: тоже безэффектные + без дамага
хочется чтобы эта замена происходила не моментально, а через какое то время (на подобии обучения в зданиях),
Юзай однократный таймер (или же если таких юнитов будет очень много, то загони весь этот скот в группу отдельную и сделай пустышную абилку родную им с 10 ЛВЛами и, условно, каждую минуту каждому юниту из группы этой снижай лвл на 1 этой абилки-пустышки периодиком, а когда будет = 1, то морфи в нужного юнита), вейты - зло. Но минус в том, что если это мелкая темка, то на неё целый лишний триггер будет.
Ладно, раз менее костыльного решения проблемы нет, сделал дополнительное исследование (скрытое), которое триггерно изучается при изучении 3-го левела оригинального улучшения.
koloff, единственно верный вариант - перетащить весь импорт из карт в кампанию. Да, трудозатратно. Да, итоговый вес доставляет. Увы.
Представь длину списка файлов в импорте кампании под конец работы
Поэтому придется думать, что загружать, а что нет. По своему опыту знаю, что вычищать потом неиспользованные данные из импорта - сущий ад. Особенно если к каждой модели по 3-4 текстуры.
И да, музыка в mp3 формате тоже не дает грузится. Онли вав.
Если твоя цель - непрерывание приказа и сохранение инвиза при изучении способности - лови нажатие на спеллбук и переключайвыбор на дамми юнит, тоже со спеллбуком. Давай приказ на горячую клавишу спеллбука, чтобы сымитировать открывание меню у самого героя. После изучения скилла - возвращай героя в выбор.
тут правда есть запары - насколько я знаю ни нажатие на книгу ни нажатие возврата в неё не отлавливаются.
Значит делаем так:
Кнопка изучения способностей - пусть будет веерный бросок с временем подготовки 3 сек например, нам важно чтобы она не активировалась.
Юнит начинает направлять способность
способность = веерный бросок
пауза юнит
приказ юниту отставить
продолжить юнит
выбор - выбрать дамик
кнопка "отмена" у дамика - тоже должна быть способностью. При нажатии способности дамика возвращаем выбор на героя, можно при этом проверить оставшиеся очки способностей, чтобы не переключать, если они ещё не кончились.
Делать всё точно как я написал. Герой не будет выходить из невидимости, но к сожалению приказ всё же будет сбиваться.
Обхода я пока не вижу, остальные способы можно будет абузить.
Бтв, про сбор команды - для продвинутых сущностей нередко исправлять за другими оказывается тяжелее, чем делать самому, важно создать максимально комфортные условия для созидания, вот для чего деньги не лишние, а уж дело и самому можно делать.
И, да, тема-то не про то, надо это или не надо, а про то, как лучше это сделать, я про это и в стартовом сообщении написал.
Я на крайний сам вопрос по варианту 3 проверю и/или будет сделан выбор между третьим вариантом, вторым, каким-то ещё и отказом от Cooldown Reduction, но если кто поможет - спасибо.
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.
Лимит операций, обычно это беда настигает заядлых гуишников.
На jass обычно нету таких проблем.
Создайте таймер с периодом .00 сек и запускайте им функции инициализации триггеров.
функция типа InitTrig_Имя триггера - это функция инициализации триггера, она вызывается из функции InitCustomTriggers, но если этих вызовов очень много то функция упирается в лимит операций и поток завершается так и не создав все триггеры.
через if else или свитч конструкцию, или написать свою функцию, которая будет принимать юнита, а возвращать string
типа такого:
function PrintType takes unit u returns string
local string s =""
if IsUnitType(u,UNIT_TYPE_ANCIENT) then
s="ANCIENT"
elseif IsUnitType(u,UNIT_TYPE_ATTACKS_FLYING) then
s="ATTACKS_FLYING"
endif
return s
endfunction
и добавляешь все свои типы через elseif которые хочешь поймать.... самый простейший вариант и 10 возможных =)
Kanteu, у тебя в описаниях стоит код AUdc, тебе нужно его заменить на равкод твоей способности. Чтобы его узнать, выдели способность и нажми Ctrl+D. Перед двоеточием будет равкод способности.
Это конкретно по ошибке... а вообще - не надо смотреть видео от этого человека, он тебя плохому научит... правда. А другим потом придётся тебя переучивать, если ты сам это дело не забросишь
можно либо заменять юнита, либо химичить с тексттагами(то есть сделать систему имен игровых обьектов на тексттагах), ещё есть функция для смены имени игрока
код
native SetPlayerName takes player whichPlayer, string name returns nothing
предметам имена изменять нельзя
способности могут быть с таким же успехом удалены, добавлены
этим
native UnitAddAbility takes unit whichUnit, integer abilityId returns boolean
native UnitRemoveAbility takes unit whichUnit, integer abilityId returns boolean
подробнее насчет предметов, думаю можно похимичить с кастом велью, устанавливать его
native S2I takes string s returns integer
native I2S takes integer i returns string
конвертировать, потом выводить строки на экран через
это
native DisplayTextToPlayer takes player toPlayer, real x, real y, string message returns nothing
с таким же успехом можно использовать хеш-таблицы, для аттача описания к чему-либо.
Ещё есть вариант, с описанием предметов и способностей в квестах.
В общем без гемора, и написания левых систем никак)
что бы она сразу перешла в режим наведения.. а то выглядит как баг, из-за которого надо нажимать по 2 раза...
Gui -> Force player to use X key
Согласовываешь с хоткеем строительства ======================================
Бафф имеется в виду Бафф или Спецэффект?
Если спецэффект:
-- String Utility API
---@param i integer
---@return real
function I2R(i) end
---@param r real
---@return integer
function R2I(r) end
---@param i integer
---@return string
function I2S(i) end
---@param r real
---@return string
function R2S(r) end
---@param r real
---@param width integer
---@param precision integer
---@return string
function R2SW(r, width, precision) end
---@param s string
---@return integer
function S2I(s) end
---@param s string
---@return real
function S2R(s) end
---@param h handle
---@return integer
function GetHandleId(h) end
---@param source string
---@param start integer
---@param ending integer
---@return string
function SubString(source, start, ending) end
---@param s string
---@return integer
function StringLength(s) end
---@param source string
---@param upper boolean
---@return string
function StringCase(source, upper) end
---@param s string
---@return integer
function StringHash(s) end
---@param source string
---@return string
function GetLocalizedString(source) end
---@param source string
---@return integer
function GetLocalizedHotkey(source) end
Eternal soul,
Способ что предложил я - вы формируете БД и далее циклом пробегаетесь по массиву unit_type_string[i] и сравниваете его с вашей строкой. Если сравнение прошло успешно то по индексу unit_type[i] находите нужного юнита. Конечно конвертировать было бы более проффесионально, но это способ тоже будет работать.
JackFastGame, просто без синхры ставишь всем героям нужное кол-во опыта, т.к у тебя одна машина и нет живых игроков, ты 1 зритель, остальные все боты и действия синхронизации не требуются для реплея, просто выставление напрямую всем игрокам експы.
» WarCraft 3 / Фишки стандартных способностей
» WarCraft 3 / Ошибка War3 Model Editor, unknown group "MDVI"
» WarCraft 3 / Как в Warcraft писать на С#?
» Администрация XGM / Страница авторизации
» WarCraft 3 / Не заходит карта (невозможно открыть файл основной карты)
» WarCraft 3 / Footman Frenzy Infinite War 1.1.1
» WarCraft 3 / Способности и Animation - Cast Point
» WarCraft 3 / Перенос Jass способностей
» WarCraft 3 / Почему юнит умирает
» WarCraft 3 / Улучшение юнита
» WarCraft 3 / Карта на одиночное прохождение
» WarCraft 3 / Спелл-каст система
» WarCraft 3 / Как проверить класификацию юнита?
» WarCraft 3 / Ошибка в способности
» WarCraft 3 / Смена названия предмета
» WarCraft 3 / Эффект строительства зданий
» WarCraft 3 / Переменная строка
» WarCraft 3 / Проблемы с синхронизацией кэша